package beans;

import dao.FuncaoDAO;
import dao.FuncaoDAOHibernate;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import modelo.Funcao;

@Named(value = "funcaoBean")
@RequestScoped
public class funcaoBean {

    private List<SelectItem> selecionarUmItemFuncao;
    private List<Funcao> lista;
    private Funcao funcaoSelecionada;

    public funcaoBean() {
        this.lista = new ArrayList<Funcao>();
        this.funcaoSelecionada = new Funcao();
    }

    public List<SelectItem> getSelecionarUmItemFuncao() {
        this.selecionarUmItemFuncao = new ArrayList<SelectItem>();
        FuncaoDAO funcaoDAO = new FuncaoDAOHibernate();
        List<Funcao> listaFuncao = funcaoDAO.listar();
        for (Funcao funcao : listaFuncao) {
            SelectItem selectItem = new SelectItem(funcao.getCodFuncao(), funcao.getNome());
            this.selecionarUmItemFuncao.add(selectItem);
        }
        return selecionarUmItemFuncao;
    }

    public List<Funcao> getLista() {
        FuncaoDAO funcaoDAO = new FuncaoDAOHibernate();
        this.lista = funcaoDAO.listar();
        return lista;
    }

    public Funcao getFuncaoSelecionada() {
        return funcaoSelecionada;
    }

    public void setFuncaoSelecionada(Funcao funcaoSelecionada) {
        this.funcaoSelecionada = funcaoSelecionada;
    }

    public void btnCriarFuncao(ActionEvent actionEvent) {
        FuncaoDAO funcaoDao = new FuncaoDAOHibernate();
        String msg;
        if (funcaoDao.criar(this.funcaoSelecionada)) {
            msg = "A função de " + this.funcaoSelecionada.getNome() + " do sistema foi criada com sucesso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        } else {
            msg = "Erro ao criar o registro de função.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }

    public void btnAlterarFuncao(ActionEvent actionEvent) {
        FuncaoDAO funcaoDao = new FuncaoDAOHibernate();
        String msg;
        if (funcaoDao.alterar(this.funcaoSelecionada)) {
            msg = "A função de " + this.funcaoSelecionada.getNome() + " do sistema foi alterada com sucesso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        } else {
            msg = "Erro ao alterar o registro de função.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }

    public void btnExcluirFuncao(ActionEvent actionEvent) {
        FuncaoDAO funcaoDao = new FuncaoDAOHibernate();
        String msg;
        if (funcaoDao.excluir(this.funcaoSelecionada)) {
            msg = "A função foi excluída com sucesso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        } else {
            msg = "Erro ao excluir o registro de função.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }

}
